package com.example.tourstor.myself;

import android.content.Intent;
import android.graphics.Color;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ProgressBar;
import android.widget.Toast;

import com.example.tourstor.DBService;
import com.example.tourstor.MainActivity;
import com.example.tourstor.R;
import com.example.tourstor.User;
import com.mob.MobSDK;

import java.util.List;

import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;

public class LoginActivity extends AppCompatActivity implements View.OnClickListener {

    Toolbar login_toolbar;
    EditText et_phone; // 手机号输入框
    EditText et_code; // 验证码输入框
    Button btn_request; // 获取验证码按钮
    Button btn_login; // 注册按钮
    int i = 60; // 设置短信验证提示时间为60s

    DBService mDBService;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);// 除去标题栏
        setContentView(R.layout.activity_login);

        setToolBar();
        initView();

        // 启动短信验证sdk
        MobSDK.init(this, "27e67ab1ee666",
                "ee6b5900833bec05fb88b116d2de8ad5");
        EventHandler eventHandler = new EventHandler() {
            @Override
            public void afterEvent(int event, int result, Object data) {
                Message msg = new Message();
                msg.arg1 = event;
                msg.arg2 = result;
                msg.obj = data;
                handler.sendMessage(msg);
            }
        };
        SMSSDK.registerEventHandler(eventHandler); // 注册回调监听接口
        //initListener();
    }


    private void setToolBar() {
        login_toolbar = (Toolbar) findViewById(R.id.login_toolbar);
        login_toolbar.setTitle("登录");
        login_toolbar.setTitleTextColor(Color.WHITE);

        this.setSupportActionBar(login_toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);//左侧添加一个默认的返回图标
        getSupportActionBar().setHomeButtonEnabled(true);//设置返回键可用
        this.getSupportActionBar().setDisplayShowTitleEnabled(true);
    }

    //Toolbar的事件---返回
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if(item.getItemId() == android.R.id.home){
            finish();
        }
        return super.onOptionsItemSelected(item);
    }

    public void initView(){

        et_phone = (EditText) findViewById(R.id.et_userPhone_login);
        et_code = (EditText) findViewById(R.id.et_password_login);
        btn_request = (Button) findViewById(R.id.getSMS_login);
        btn_login = (Button) findViewById(R.id.btn_login);
        btn_request.setOnClickListener(this);
        btn_login.setOnClickListener(this);
    }

    /*public void initListener(){

        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(LoginActivity.this, PersonalActivity.class));
            }
        });
    }
*/
    @Override
    public void onClick(View view) {

        String phoneNums = et_phone.getText().toString();
        switch (view.getId()) {
            case R.id.getSMS_login:
                if (!judgePhoneNums(phoneNums)) {// 判断输入号码是否正确
                    return;
                }
                SMSSDK.getVerificationCode("86", phoneNums); // 调用sdk发送短信验证
                btn_request.setClickable(false);// 设置按钮不可点击 显示倒计时
                btn_request.setText("重新发送(" + i + ")");
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        for (i = 30; i > 0; i--) {
                            handler.sendEmptyMessage(-9);
                            if (i <= 0) {
                                break;
                            }
                            try {
                                Thread.sleep(1000);// 线程休眠实现读秒功能
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                        handler.sendEmptyMessage(-8);// 在60秒后重新显示为获取验证码
                    }
                }).start();
                break;

            case R.id.btn_login:
                SMSSDK.submitVerificationCode("86", phoneNums, et_code.getText()
                        .toString());
                createProgressBar();
                mDBService = DBService.getDbService();
                List<User> userList = mDBService.getUserData();
                for(User user : userList){
                    if(!(et_phone.equals(user.getPhone()))){
                        User u = new User();
                        u.setPhone(et_phone.getText().toString());
                        mDBService.insertUserData(u);
                    }
                }
                break;

        }
    }

    Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            if (msg.what == -9) {
                btn_request.setText("重新发送(" + i + ")");
            } else if (msg.what == -8) {
                btn_request.setText("获取验证码");
                btn_request.setClickable(true); // 设置可点击
                i = 30;
            } else {
                int event = msg.arg1;
                int result = msg.arg2;
                Object data = msg.obj;
                if (result == SMSSDK.RESULT_COMPLETE) {
                    // 短信注册成功后，返回MainActivity,然后提示
                    if (event == SMSSDK.EVENT_SUBMIT_VERIFICATION_CODE) {// 提交验证码成功
                        Toast.makeText(getApplicationContext(), "提交验证码成功",
                                Toast.LENGTH_SHORT).show();
                        // 验证成功后跳转主界面
                        //此处可注释掉
                        Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                        intent.putExtra("id", 4);
                        intent.putExtra("userPhone", et_phone.getText().toString());
                        startActivity(intent);
                        Log.e("注册", "成功！");
                        finish();// 成功跳转之后销毁当前页面

                    } else if (event == SMSSDK.EVENT_GET_VERIFICATION_CODE) {
                        Toast.makeText(getApplicationContext(), "验证码已经发送",
                                Toast.LENGTH_SHORT).show();
                    } else {
                        ((Throwable) data).printStackTrace();
                    }
                }
            }
        }
    };

    /**
     * 判断手机号码是否合理
     *
     * @param phoneNums
     */
    private boolean judgePhoneNums(String phoneNums) {
        if (isMatchLength(phoneNums, 11) && isMobileNO(phoneNums)) {
            return true;
        }
        Toast.makeText(this, "手机号码输入有误！", Toast.LENGTH_SHORT).show();
        return false;
    }

    public static boolean isMatchLength(String str, int length) {
        if (str.isEmpty()) {
            return false;
        } else {
            return str.length() == length ? true : false;
        }
    }

    /**
     * 验证手机格式
     */
    public static boolean isMobileNO(String mobileNums) {

        /*
         * 移动：134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
         * 联通：130、131、132、152、155、156、185、186 电信：133、153、180、189、（1349卫通）
         * 总结起来就是第一位必定为1，第二位必定为3或5或8，其他位置的可以为0-9
         */
        String telRegex = "[1][3578]\\d{9}";// "[1]"代表第1位为数字1，"[358]"代表第二位可以为3、5、8中的一个，"\\d{9}"代表后面是可以是0～9的数字，有9位。
        if (TextUtils.isEmpty(mobileNums))
            return false;
        else
            return mobileNums.matches(telRegex);
    }

    private void createProgressBar() {
        FrameLayout layout = (FrameLayout) findViewById(android.R.id.content);
        FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(
                FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
        layoutParams.gravity = Gravity.CENTER;
        ProgressBar mProBar = new ProgressBar(this);
        mProBar.setLayoutParams(layoutParams);
        mProBar.setVisibility(View.VISIBLE);
        layout.addView(mProBar);
    }

    @Override
    protected void onDestroy() {
        SMSSDK.unregisterAllEventHandler();
        super.onDestroy();
    }




}
